"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/5/23 10:54
@Description : 
练习：
1.定义一个类SearchMaxNumber，定义函数max_number,实现查找一个列表数据最大值
2.定义一个Car类，定义一个函数update_info,可以更新汽车的颜色，价格，型号，品牌信息
3.定义一个圆类，定义半径属性，定义函数实现周长和面积的计算并返回
4.定义Account类，
    1.要求具有属性： 姓名（长度2-4位），余额（必须大于10），密码（长度6），如果不满足则给出提示信息，使用默认值
    2.定义set_xxx方法给属性赋值
    3.编写show_info方法，接收用户名和密码，正确则展示用户的余额信息
"""
import math


class SearchMaxNumber:

    def max_number(self, lst: list):
        # 假设列表中的第一个元素是最大值
        max_num = lst[0]
        # 遍历列表
        for num in lst:
            if num > max_num:
                max_num = num
        return max_num


class Car:
    # 隐藏属性
    __color = None
    __price = None
    __model = None
    __brand = None

    # 定义函数  更新属性

    def update_info(self, color, price, model, brand):
        self.__color = color
        self.__price = price
        self.__model = model
        self.__brand = brand

    def show_info(self):
        print(self.__color, self.__model, self.__brand, self.__price)


class Circle:
    __radius = None

    def __init__(self, radius):
        self.__radius = radius

    # 获取圆的面积
    def area(self):
        return math.pi * self.__radius ** 2

    # 获取圆的周长
    def perimeter(self):
        return math.pi * self.__radius * 2


if __name__ == '__main__':
    searchMaxNumber = SearchMaxNumber()
    lst = [10, 21, 3, 4, 50, 6, 7, 8, 9, 10]
    # 通过对象调用方法
    max_num = searchMaxNumber.max_number(lst)
    # print(max_num)

    # 定义car对象
    car = Car()
    # 通过类名访问私有属性   type object 'Car' has no attribute '__color'
    # print(Car.__color)
    # 通过实例对象访问属性   AttributeError: 'Car' object has no attribute '__color'
    # print(car.__color)
    car.update_info('white', 20000, 'modelY', "特斯拉")
    car.show_info()

    # 获取圆的对象
    circle = Circle(10)
    result = math.floor(circle.area())
    print(f'圆的面积是:{result}')
    result = math.floor(circle.perimeter())
    print(f'圆的周长是:{result}')
